/*
* Description: 磁盘信息获取
*/
#ifndef DISKPART_REPORT_H
#define DISKPART_REPORT_H
#include <Windows.h>
#include <iostream>
#include <iomanip>
#include "rpc_service/sendto_host.h"
#include <winscard.h>

namespace DFX {
struct DiskInfo {
    DWORD partitionId;
    std::string partitionFormat;
};

class DiskpartReport {
public:
    DiskpartReport() = default;
    ~DiskpartReport() = default;
    void Init(std::shared_ptr<WINCONTROL::SendToHost> sendtoHost);
    void Deinit();
    
private:
    void Start();
    void GetDiskInfo(DiskInfo &diskInfo);
    void DiskInfoReport(DiskInfo &diskInfo);
    std::shared_ptr<WINCONTROL::SendToHost> m_sendtoHost{ nullptr };
};

#define DISKPART_REPORT SingletonNew<DFX::DiskpartReport>::GetInstance()
} // namespace DFX
#endif  // DISKPART_REPORT_H